/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package otcapp.experto;

import java.util.List;
import otcapp.dto.InternoDTO;
import otcapp.entidades.Departamento;
import otcapp.entidades.Domicilio;
import otcapp.entidades.Interno;
import otcapp.entidades.Localidad;
import otcapp.experto.excepciones.ExpertoInternoException;
import persistencia.exceptions.ExcepcionFachada;
import persistencia.Fachada;

/**
 *
 * @author diego
 */
public class ExpertoIngresarInterno extends Experto {

    public void guardarInterno(InternoDTO dtoInterno) throws ExpertoInternoException {
        try {
            validarInterno(dtoInterno);
        } catch (ExpertoInternoException ex) {
            throw ex;
        }

        Interno interno = new Interno();
        interno.setNombre(dtoInterno.getNombre());
        interno.setApellido(dtoInterno.getApellido());
        interno.setDni(dtoInterno.getDni());
        interno.setSexo(dtoInterno.getSexo());
        //Domicilio interno
        if (dtoInterno.getCalle().length() > 0) {
            Domicilio domicilioInterno = new Domicilio();
            domicilioInterno.setCalle(dtoInterno.getCalle());
            domicilioInterno.setNro(Integer.valueOf(dtoInterno.getNro()));
            domicilioInterno.setCasa(dtoInterno.getCasa());
            domicilioInterno.setManzana(dtoInterno.getManzana());
            domicilioInterno.setPiso(dtoInterno.getPiso());
            domicilioInterno.setTelefono(dtoInterno.getTelefonoDom());
            domicilioInterno.setMonoblock(dtoInterno.getMonoblock());
            domicilioInterno.setLocalidad(dtoInterno.getLocalidad());
            interno.setDomicilio(domicilioInterno);
        }
        guardarInterno(interno);
        dtoInterno.setId(interno.getId());
    }

    private void guardarInterno(Interno interno) throws ExpertoInternoException{
        try {
            Fachada.getInstancia().guardar(interno);
        } catch (ExcepcionFachada ex) {
            throw new ExpertoInternoException("Error al guardar Interno/a");
        }
    }
    
    private void validarInterno(InternoDTO dtoInterno) throws ExpertoInternoException {

        if (dtoInterno.getApellido().length() == 0) {
            throw new ExpertoInternoException("Falta ingresar Apellido del Interno/a.");
        }

//        if (dtoInterno.getDni().length() == 0) {
//            throw new ExpertoInternoException("Falta ingresar DNI del Interno/a.");
//        }

        if (dtoInterno.getNombre().length() == 0) {
            throw new ExpertoInternoException("Falta ingresar Nombre del Interno/a.");
        }

        if (dtoInterno.getSexo().length() == 0) {
            throw new ExpertoInternoException("Falta Sexo Interno/a.");
        }

    }

    public List<Localidad> buscarLocalidades() {
        return Fachada.getInstancia().buscar(Localidad.class, null);
    }

    public List<Departamento> buscarDepartamentos() {
        return Fachada.getInstancia().buscar(Departamento.class, null);
    }
}
